/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Pedidos.Pedido.Controlador;

import Pedidos.Cliente.BEAN.ClienteBEAN;
import Pedidos.Cliente.DAO.ClienteDAO;
import Pedidos.Cliente.Vista.AgregarCliente;
import Pedidos.Pedido.Vista.ClientePedido;
import Pedidos.Pedido.Vista.Pedido;
import java.util.ArrayList;
import sape.Controlador;
import sape.ControladorTabla;
import sape.MenuControlador;

/**
 *
 * @author Diego
 */
public class ClientePedidoControlador extends ControladorTabla {
    ClientePedido vista;
    MenuControlador menu_controlador=null;
    String[] columnas_tabla = {"Nombre","DNI","email", "telefono"};
    Object[][] datos_tabla = null;
    ArrayList<ClienteBEAN>lista=null;
        
    
    public ClientePedidoControlador(ClientePedido vista, MenuControlador menuControlador){
        this.inicializarTabla();
        this.menu_controlador=menuControlador;
        this.vista=vista;
    }
    
     private void inicializarTabla() {
        lista= ClienteDAO.getListaClientes();
        this.actualizar_tabla();  
    }
    public void actualizar_tabla(){
            
            if(lista==null){
                this.datos_tabla=null;
                fireTableDataChanged();
                return;
            }
            
            Object[][] new_datos_tabla=new Object[lista.size()][columnas_tabla.length];
            
            for(int i=0;i<lista.size();i++){
               ClienteBEAN elemento=lista.get(i);
               new_datos_tabla[i][0]=elemento.getNombre()+ " " + elemento.getApellidoPaterno() + " " + elemento.getApellidoMaterno();
               new_datos_tabla[i][1]=elemento.getDni();
               new_datos_tabla[i][2]=elemento.getMail();
               new_datos_tabla[i][3]=elemento.getTelefono();
            }
            this.datos_tabla=new_datos_tabla;
            fireTableDataChanged();
        }
    
        @Override
        public int getColumnCount() {
            if(columnas_tabla==null)return 0;
            return columnas_tabla.length;
        }
       @Override
        public int getRowCount() {
           if(datos_tabla==null)return 0;
            return datos_tabla.length;
        }
       @Override
        public String getColumnName(int col) {
           
            return columnas_tabla[col];
        }
       @Override
        public Object getValueAt(int row, int col) {
            if(datos_tabla==null)return " ";
            return datos_tabla[row][col];
        }
       @Override
        public Class getColumnClass(int c) {
           if(datos_tabla==null)return " ".getClass();
            return getValueAt(0, c).getClass();
        }
       @Override
        public void setValueAt(Object value, int row, int col) {
           
            System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            datos_tabla[row][col] = value;
            fireTableCellUpdated(row, col);
            System.out.println("New value of data:");
            printDebugData();
            
        }      
        private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();

            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    System.out.print("  " + datos_tabla[i][j]);
                }
                System.out.println();
            }
            System.out.println("--------------------------");
        }        

    public void clienteEscogido(int row, int column) {
       
       int idProducto= lista.get(row).getId();
       System.out.println(idProducto +" A");
       Pedido new_vista=new Pedido(this.menu_controlador,idProducto);
        this.menu_controlador.controlador_interno=new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
    }

    public void regresar() {
        Pedido new_vista=new Pedido(this.menu_controlador);
        this.menu_controlador.controlador_interno=new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
    }

    public void agregar() {
        this.menu_controlador.cerrarVista();
        this.vista.setVisible(false);
        AgregarCliente new_vista=new AgregarCliente(this.menu_controlador);
        this.menu_controlador.controlador_interno=new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
    }

}
